table of contents
kill(2) | 2007-10-27-16:31 | kill(2) |
НАЗВА ¶
kill — надсилає процесові сигнал
СИНОПСИС ¶
#include <sys/types.h>
#include <signal.h>
int kill(pid_t pid, int sig);
ОПИС ¶
Системний виклик kill можна використовувати, аби надіслати будь-який сигнал будь-якому процесові чи групі процесів.
Якщо pid є додатнім, сигнал sig надсилається процесові pid.
Якщо pid дорівнює 0, sig посилається всім процесам тої ж групи, що й поточний процес.
Якщо pid дорівнює -1, sig надсилається всім процесам, крім процесу 1 (init), але дивіться нижче.
Якщо pid менший за -1, sig надсилається всім процесам групи -pid.
Якщо sig дорівнює 0, сигнал не посилається, однак перевірка на помилки все ж відбудеться.
ПОВЕРНЕНЕ ЗНАЧЕННЯ ¶
В разі успіху повертається 0. При невдачі повертається -1, а змінна errno встановлюється відповідним чином.
ПОМИЛКИ ¶
- EINVAL
-
Вказано недійсний сигнал. - ESRCH
-
Ідентифікатор чи група процесів не існує. Зауважте: існуючий процес може бути зомбі — процесом, котрий вже завершився, однак для нього ще не виконувався wait(). - EPERM
-
Процес не має права надсилати сигнал якомусь із процесів-приймачів. Щоб процес мав дозвіл відіслати процесові pid сигнал, він або повинен мати привілеї користувача root, або ж його діючий чи фактичний ідентифікатор користувача повинен дорівнювати фактичному чи збереженому ідентифікатору користувача адресата. У випадку SIGCONT достатньо, щоб надсилач і адресат належали до одного сеансу.
ПРИМІТКИ ¶
Неможливо послати сигнал задачі номер 1, процесові init, якщо він на цей сигнал не встановив обробник. Це зроблено для того, щоб випадково не вивести систему з ладу.
POSIX 1003.1-2001 вимагає, щоб kill (-1, sig) надсилав sig усім процесам, яким поточний процес має право сигналити, крім хіба деяких визначених реалізацією системних процесів. Linux дозволяє процесові просигналити собі самому, але в Linux виклик kill(-1, sig) не надсилає сигналу поточному процесові.
ВІДПОВІДНІСТЬ СТАНДАРТАМ ¶
SVr4, SVID, POSIX.1, X/OPEN, BSD4.3, POSIX 1003.1-2001.
ДИВІТЬСЯ ТАКОЖ ¶
2007-10-27-16:31 | © 2005-2007 DLOU, GNU FDL |